Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Формування цифрового підпису згідно стандарту DSS

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2007
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Проектування комп’ютерних засобів захисту
Група:
КСМ

Частина тексту файла

Міністерство освіти та науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 2 з курсу: « Проектування комп’ютерних засобів захисту» на тему: “ Формування цифрового підпису згідно стандарту DSS” Львів 2007 Мета роботи: реалізувати демонстраційну програму формування цифрового підпису вхідного повідомлення згідно стандарту DSS. Теоретичні відомості Відправник і отримувач електронного документа використовують при обчисленні великі цілі числа:  і  – прості числа,  біт кожне ;  – просте число довжиною 160 розрядів (дільник числа). Числа , ,  є відкритими і можуть бути спільними для всіх користувачів мережі. Відправник вибирає випадкове ціле число (). Число  – секретний ключ відправника для формування електронного цифрового підпису. Наступним кроком відправник обчислює значення . Число  – відкритий ключ для перевірки підпису відправника. Це число передається всім отримувачам документів. Для того, щоб підписати документ , відправник хешує його в ціле хеш-значення : , після цього відправник генерує випадкове ціле число  при умові, що , і обчислює число : . Обчисливши число  відправник обчислює за допомогою секретного ключа  ціле число : . Пара чисел  і  утворюють цифровий підпис  під документом . Таким чином, підписане повідомлення складається з трьох чисел . Отримувач підписаного повідомлення  перевіряє виконання умов ,  і відкидає підпис, якщо хоча б одна з умов не виконується. Потім отримувач обчислює значення , хеш-значення  і числа Після цього отримувач за допомогою відкритого ключа  обчислює значення  і перевіряє виконання умови . Якщо умова  виконується, тоді підпис  під документом  визнається отримувачем як справжній. Можна строго математично довести , що рівність  буде виконуватися тоді і тільки тоді, коли підпис  під документом  отриманий за допомогою того секретного ключа , з якого був обчислений відкритий ключ . Таким чином, можна твердо переконатися , що відправник повідомлення володіє даним секретним ключом  (не розкриваючи при цьому значення ключа ) і що відправник підписав даний документ . Лістинг програми int DSS_Setup() { FILE *fp; big p,q,h,g,n,s,t; miracl *mip=mirsys(100,0); p=mirvar(0); q=mirvar(0); h=mirvar(0); g=mirvar(0); n=mirvar(0); s=mirvar(0); t=mirvar(0); /* randomise */ /* printf("Enter 9 digit random number seed = "); scanf("%ld",&seed); getchar();*/ seed=123456789; irand(seed); /* generate q */ forever { bigbits(QBITS,q); nxprime(q,q); if (logb2(q)>QBITS) continue; break; } printf("q= "); cotnum(q,stdout); /* generate p */ expb2(PBITS,t); decr(t,1,t); premult(q,2,n); divide(t,n,t); expb2(PBITS-1,s); decr(s,1,s); divide(s,n,s); forever { bigrand(t,p); if (compare(p,s)<=0) continue; premult(p,2,p); multiply(p,q,p); incr(p,1,p); copy(p,n); if (isprime(p)) break; } printf("p= "); cotnum(p,stdout); /* generate g */ do { decr(p,1,t); bigrand(t,h); divide(t,q,t); powmod(h,t,p,g); } while (size(g)==1); printf("g= "); cotnum(g,stdout); fp=fopen("common.dss","wt"); fprintf(fp,"%d\n",PBITS); mip->IOBASE=16; cotnum(p,fp); cotnum(q,fp); cotnum(g,fp); fclose(fp); /*clrscr(); ShowMenu();*/ return 0; } int DSS_GenerateKeys() { FILE *fp; big p,q,g,x,y; long seed; int bits; miracl *mip; /* get common data */ fp=fopen("common.dss","rt"); if (fp==NULL) { printf("file common.dss does not exist\n"); return 0; } fscanf(fp,"%d\n",&bits); mip=mirsys(bits/4,16); /* use Hex internally */ p=mirvar(0); q=mirvar(0); g=mirvar(0); x=mirvar(0); y=mi...
Антиботан аватар за замовчуванням

31.03.2013 15:03

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини